#ifndef _H_I_APPLICATION_H_
#define _H_I_APPLICATION_H_

#include "../typedefine.h"
#include "IServiceComponent.h"

namespace QWER
{
	class CApplicationHelper;

	QDLL_EXPORT QCLASS IApplication QABSTRACT
	{
	public:
		IApplication();
		~IApplication();
	protected:
		virtual void _Awake(CApplicationHelper* poHelper) = 0;

	private:
		PTR(CApplicationHelper) m_poHelper;

#ifdef _USING_CLI
	internal:
#else
	private:
		friend class IRunner;
		friend class CNewApplicationMsg;
#endif
		void _ExecAwake();
		PTR(CApplicationHelper) _ApplicationHelper() { return m_poHelper; }

	};
}

#endif
